{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Основы анализа данных с pandas & matplotlib\n",
"\n",
"\n",
"[Pandas](http://pandas.pydata.org/) - библиотека Python для анализа данных для эффективной работы с объектами таблиц (DataFrame) с индексацией;\n",
"\n",
"[Matplotlib](https://matplotlib.org/#) - библиотека для визуализации данных и построения графиков и диаграмм, во многом повторяющая возможности MATLAB."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
PassengerId
\n",
"
Survived
\n",
"
Pclass
\n",
"
Name
\n",
"
Sex
\n",
"
Age
\n",
"
SibSp
\n",
"
Parch
\n",
"
Ticket
\n",
"
Fare
\n",
"
Cabin
\n",
"
Embarked
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
0
\n",
"
3
\n",
"
Braund, Mr. Owen Harris
\n",
"
male
\n",
"
22.0
\n",
"
1
\n",
"
0
\n",
"
A/5 21171
\n",
"
7.2500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
1
\n",
"
1
\n",
"
Cumings, Mrs. John Bradley (Florence Briggs Th...
\n",
"
female
\n",
"
38.0
\n",
"
1
\n",
"
0
\n",
"
PC 17599
\n",
"
71.2833
\n",
"
C85
\n",
"
C
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
1
\n",
"
3
\n",
"
Heikkinen, Miss. Laina
\n",
"
female
\n",
"
26.0
\n",
"
0
\n",
"
0
\n",
"
STON/O2. 3101282
\n",
"
7.9250
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
1
\n",
"
1
\n",
"
Futrelle, Mrs. Jacques Heath (Lily May Peel)
\n",
"
female
\n",
"
35.0
\n",
"
1
\n",
"
0
\n",
"
113803
\n",
"
53.1000
\n",
"
C123
\n",
"
S
\n",
"
\n",
"
\n",
"
4
\n",
"
5
\n",
"
0
\n",
"
3
\n",
"
Allen, Mr. William Henry
\n",
"
male
\n",
"
35.0
\n",
"
0
\n",
"
0
\n",
"
373450
\n",
"
8.0500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 1 0 3 \n",
"1 2 1 1 \n",
"2 3 1 3 \n",
"3 4 1 1 \n",
"4 5 0 3 \n",
"\n",
" Name Sex Age SibSp \\\n",
"0 Braund, Mr. Owen Harris male 22.0 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
"2 Heikkinen, Miss. Laina female 26.0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
"4 Allen, Mr. William Henry male 35.0 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"TRAIN_CSV_PATH = 'titanic/train.csv'\n",
"TEST_CSV_PATH = 'titanic/test.csv'\n",
"\n",
"# загрузка обучающей выборки данных в объект data frame и просмотр верха таблицы\n",
"# обратить внимание на колонку с номером строки и на PassengerId\n",
"# load training data to pandas data frame and see its top rows\n",
"# pay attention to index column and PassengerId column\n",
"df_train = pd.read_csv(TRAIN_CSV_PATH)\n",
"df_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Survived
\n",
"
Pclass
\n",
"
Name
\n",
"
Sex
\n",
"
Age
\n",
"
SibSp
\n",
"
Parch
\n",
"
Ticket
\n",
"
Fare
\n",
"
Cabin
\n",
"
Embarked
\n",
"
\n",
"
\n",
"
PassengerId
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
0
\n",
"
3
\n",
"
Braund, Mr. Owen Harris
\n",
"
male
\n",
"
22.0
\n",
"
1
\n",
"
0
\n",
"
A/5 21171
\n",
"
7.2500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
2
\n",
"
1
\n",
"
1
\n",
"
Cumings, Mrs. John Bradley (Florence Briggs Th...
\n",
"
female
\n",
"
38.0
\n",
"
1
\n",
"
0
\n",
"
PC 17599
\n",
"
71.2833
\n",
"
C85
\n",
"
C
\n",
"
\n",
"
\n",
"
3
\n",
"
1
\n",
"
3
\n",
"
Heikkinen, Miss. Laina
\n",
"
female
\n",
"
26.0
\n",
"
0
\n",
"
0
\n",
"
STON/O2. 3101282
\n",
"
7.9250
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
4
\n",
"
1
\n",
"
1
\n",
"
Futrelle, Mrs. Jacques Heath (Lily May Peel)
\n",
"
female
\n",
"
35.0
\n",
"
1
\n",
"
0
\n",
"
113803
\n",
"
53.1000
\n",
"
C123
\n",
"
S
\n",
"
\n",
"
\n",
"
5
\n",
"
0
\n",
"
3
\n",
"
Allen, Mr. William Henry
\n",
"
male
\n",
"
35.0
\n",
"
0
\n",
"
0
\n",
"
373450
\n",
"
8.0500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
6
\n",
"
0
\n",
"
3
\n",
"
Moran, Mr. James
\n",
"
male
\n",
"
NaN
\n",
"
0
\n",
"
0
\n",
"
330877
\n",
"
8.4583
\n",
"
NaN
\n",
"
Q
\n",
"
\n",
"
\n",
"
7
\n",
"
0
\n",
"
1
\n",
"
McCarthy, Mr. Timothy J
\n",
"
male
\n",
"
54.0
\n",
"
0
\n",
"
0
\n",
"
17463
\n",
"
51.8625
\n",
"
E46
\n",
"
S
\n",
"
\n",
"
\n",
"
8
\n",
"
0
\n",
"
3
\n",
"
Palsson, Master. Gosta Leonard
\n",
"
male
\n",
"
2.0
\n",
"
3
\n",
"
1
\n",
"
349909
\n",
"
21.0750
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
9
\n",
"
1
\n",
"
3
\n",
"
Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)
\n",
"
female
\n",
"
27.0
\n",
"
0
\n",
"
2
\n",
"
347742
\n",
"
11.1333
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
10
\n",
"
1
\n",
"
2
\n",
"
Nasser, Mrs. Nicholas (Adele Achem)
\n",
"
female
\n",
"
14.0
\n",
"
1
\n",
"
0
\n",
"
237736
\n",
"
30.0708
\n",
"
NaN
\n",
"
C
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Survived Pclass \\\n",
"PassengerId \n",
"1 0 3 \n",
"2 1 1 \n",
"3 1 3 \n",
"4 1 1 \n",
"5 0 3 \n",
"6 0 3 \n",
"7 0 1 \n",
"8 0 3 \n",
"9 1 3 \n",
"10 1 2 \n",
"\n",
" Name Sex Age \\\n",
"PassengerId \n",
"1 Braund, Mr. Owen Harris male 22.0 \n",
"2 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 \n",
"3 Heikkinen, Miss. Laina female 26.0 \n",
"4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 \n",
"5 Allen, Mr. William Henry male 35.0 \n",
"6 Moran, Mr. James male NaN \n",
"7 McCarthy, Mr. Timothy J male 54.0 \n",
"8 Palsson, Master. Gosta Leonard male 2.0 \n",
"9 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 \n",
"10 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 \n",
"\n",
" SibSp Parch Ticket Fare Cabin Embarked \n",
"PassengerId \n",
"1 1 0 A/5 21171 7.2500 NaN S \n",
"2 1 0 PC 17599 71.2833 C85 C \n",
"3 0 0 STON/O2. 3101282 7.9250 NaN S \n",
"4 1 0 113803 53.1000 C123 S \n",
"5 0 0 373450 8.0500 NaN S \n",
"6 0 0 330877 8.4583 NaN Q \n",
"7 0 0 17463 51.8625 E46 S \n",
"8 3 1 349909 21.0750 NaN S \n",
"9 0 2 347742 11.1333 NaN S \n",
"10 1 0 237736 30.0708 NaN C "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# используем PassengerId как колонку с уникальным индексом (номером), чтобы избежать двойной индексации\n",
"# we should use PassengerId as index column to not have duplicated indexes\n",
"df_train = pd.read_csv(TRAIN_CSV_PATH, index_col=0)\n",
"df_train.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Pclass
\n",
"
Name
\n",
"
Sex
\n",
"
Age
\n",
"
SibSp
\n",
"
Parch
\n",
"
Ticket
\n",
"
Fare
\n",
"
Cabin
\n",
"
Embarked
\n",
"
\n",
"
\n",
"
PassengerId
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
892
\n",
"
3
\n",
"
Kelly, Mr. James
\n",
"
male
\n",
"
34.5
\n",
"
0
\n",
"
0
\n",
"
330911
\n",
"
7.8292
\n",
"
NaN
\n",
"
Q
\n",
"
\n",
"
\n",
"
893
\n",
"
3
\n",
"
Wilkes, Mrs. James (Ellen Needs)
\n",
"
female
\n",
"
47.0
\n",
"
1
\n",
"
0
\n",
"
363272
\n",
"
7.0000
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
894
\n",
"
2
\n",
"
Myles, Mr. Thomas Francis
\n",
"
male
\n",
"
62.0
\n",
"
0
\n",
"
0
\n",
"
240276
\n",
"
9.6875
\n",
"
NaN
\n",
"
Q
\n",
"
\n",
"
\n",
"
895
\n",
"
3
\n",
"
Wirz, Mr. Albert
\n",
"
male
\n",
"
27.0
\n",
"
0
\n",
"
0
\n",
"
315154
\n",
"
8.6625
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
896
\n",
"
3
\n",
"
Hirvonen, Mrs. Alexander (Helga E Lindqvist)
\n",
"
female
\n",
"
22.0
\n",
"
1
\n",
"
1
\n",
"
3101298
\n",
"
12.2875
\n",
"
NaN
\n",
"
S
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Pclass Name Sex \\\n",
"PassengerId \n",
"892 3 Kelly, Mr. James male \n",
"893 3 Wilkes, Mrs. James (Ellen Needs) female \n",
"894 2 Myles, Mr. Thomas Francis male \n",
"895 3 Wirz, Mr. Albert male \n",
"896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female \n",
"\n",
" Age SibSp Parch Ticket Fare Cabin Embarked \n",
"PassengerId \n",
"892 34.5 0 0 330911 7.8292 NaN Q \n",
"893 47.0 1 0 363272 7.0000 NaN S \n",
"894 62.0 0 0 240276 9.6875 NaN Q \n",
"895 27.0 0 0 315154 8.6625 NaN S \n",
"896 22.0 1 1 3101298 12.2875 NaN S "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# загрузка тестовых данных, для которых нужно сделать предсказание: выживет или не выживет пассажир,\n",
"# снова используем index_col - первую (нулевую) колонку, это PassengerId как счетчик или номер строки\n",
"# load test dataset - a dataset for which we have to make predictions whether a passenger survives\n",
"df_test = pd.read_csv(TEST_CSV_PATH, index_col=0)\n",
"df_test.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 891 entries, 1 to 891\n",
"Data columns (total 11 columns):\n",
"Survived 891 non-null int64\n",
"Pclass 891 non-null int64\n",
"Name 891 non-null object\n",
"Sex 891 non-null object\n",
"Age 714 non-null float64\n",
"SibSp 891 non-null int64\n",
"Parch 891 non-null int64\n",
"Ticket 891 non-null object\n",
"Fare 891 non-null float64\n",
"Cabin 204 non-null object\n",
"Embarked 889 non-null object\n",
"dtypes: float64(2), int64(4), object(5)\n",
"memory usage: 83.5+ KB\n"
]
}
],
"source": [
"# проверка общей информации о данных: количество строк, столбцов, пустых значений и типов данных\n",
"# check overall dataset info, how many rows, columns, null values it has and what are column types\n",
"df_train.info()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 418 entries, 892 to 1309\n",
"Data columns (total 10 columns):\n",
"Pclass 418 non-null int64\n",
"Name 418 non-null object\n",
"Sex 418 non-null object\n",
"Age 332 non-null float64\n",
"SibSp 418 non-null int64\n",
"Parch 418 non-null int64\n",
"Ticket 418 non-null object\n",
"Fare 417 non-null float64\n",
"Cabin 91 non-null object\n",
"Embarked 418 non-null object\n",
"dtypes: float64(2), int64(3), object(5)\n",
"memory usage: 35.9+ KB\n"
]
}
],
"source": [
"df_test.info()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Survived
\n",
"
Pclass
\n",
"
Name
\n",
"
Sex
\n",
"
Age
\n",
"
SibSp
\n",
"
Parch
\n",
"
Ticket
\n",
"
Fare
\n",
"
Cabin
\n",
"
Embarked
\n",
"
\n",
"
\n",
"
PassengerId
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1305
\n",
"
NaN
\n",
"
3
\n",
"
Spector, Mr. Woolf
\n",
"
male
\n",
"
NaN
\n",
"
0
\n",
"
0
\n",
"
A.5. 3236
\n",
"
8.0500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
1306
\n",
"
NaN
\n",
"
1
\n",
"
Oliva y Ocana, Dona. Fermina
\n",
"
female
\n",
"
39.0
\n",
"
0
\n",
"
0
\n",
"
PC 17758
\n",
"
108.9000
\n",
"
C105
\n",
"
C
\n",
"
\n",
"
\n",
"
1307
\n",
"
NaN
\n",
"
3
\n",
"
Saether, Mr. Simon Sivertsen
\n",
"
male
\n",
"
38.5
\n",
"
0
\n",
"
0
\n",
"
SOTON/O.Q. 3101262
\n",
"
7.2500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
1308
\n",
"
NaN
\n",
"
3
\n",
"
Ware, Mr. Frederick
\n",
"
male
\n",
"
NaN
\n",
"
0
\n",
"
0
\n",
"
359309
\n",
"
8.0500
\n",
"
NaN
\n",
"
S
\n",
"
\n",
"
\n",
"
1309
\n",
"
NaN
\n",
"
3
\n",
"
Peter, Master. Michael J
\n",
"
male
\n",
"
NaN
\n",
"
1
\n",
"
1
\n",
"
2668
\n",
"
22.3583
\n",
"
NaN
\n",
"
C
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Survived Pclass Name Sex Age \\\n",
"PassengerId \n",
"1305 NaN 3 Spector, Mr. Woolf male NaN \n",
"1306 NaN 1 Oliva y Ocana, Dona. Fermina female 39.0 \n",
"1307 NaN 3 Saether, Mr. Simon Sivertsen male 38.5 \n",
"1308 NaN 3 Ware, Mr. Frederick male NaN \n",
"1309 NaN 3 Peter, Master. Michael J male NaN \n",
"\n",
" SibSp Parch Ticket Fare Cabin Embarked \n",
"PassengerId \n",
"1305 0 0 A.5. 3236 8.0500 NaN S \n",
"1306 0 0 PC 17758 108.9000 C105 C \n",
"1307 0 0 SOTON/O.Q. 3101262 7.2500 NaN S \n",
"1308 0 0 359309 8.0500 NaN S \n",
"1309 1 1 2668 22.3583 NaN C "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# unify all data to one data frame for more comprehensive analysis\n",
"# объединим тестовый и тренировочный датасеты для общего анализа\n",
"# средние, медианы, распределения для полного датасета будут другими\n",
"# Using pandas.concat method https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html\n",
"# default is unify by rows\n",
"df = pd.concat([df_train, df_test], sort=False)\n",
"df.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Данные в соревновании разбиты на **тренировочную (обучающую) и контрольную (тестовую) выборки** - train.csv & test.csv. Эти выборки в англоязычном data science часто называются training set и test set (validation set).\n",
"\n",
"Для тренировки или обучения предсказательной модели используется **обучающая выборка**. На её основе строится функция определения переменной-отклика (предсказания, результата) по признакам.\n",
"\n",
"**Тестовая или контрольная выборка** служит для оценки качества предсказаний модели на новых данных, т.е. данных, на которых модель не обучалась и которые она ещё не встречала.\n",
"\n",
"В данном случае организаторы соревнования создали для участников разбиение. Кроме того, в этом соревновании имеются контрольные данные двух видов: публичные (public test set) и приватные (private test set). Приватные данные закрыты, их нельзя получить. На публичных данных решение проверяется сразу же после загрузки, однако на них можно переобучиться то есть подогнать свою модель для очень точного предсказания на публичных данных. Время от времени проводится тестирование на приватных, закрытых для всех данных.\n",
"\n",
"Поэтому наивысшая отметка точности (score) 1 на публичных данных не говорит о высоком качестве предсказательной модели, а скорее всего говорит о точной подгонке к публичным тестовым данным, то есть о **переобучении** на них.\n",
"\n",
"Если тренировочную и тестовую выборки создаёт сам аналитик, то часто используется соотношение размеров выборок 70/30 или близкое к нему.\n",
"\n",
"Подробнее об оценке качества моделей можно почитать в статье [Открытый курс машинного обучения. Тема 3. Классификация, деревья решений и метод ближайших соседей (раздел Выбор параметров модели и кросс-валидация)](https://habr.com/ru/company/ods/blog/322534/#vybor-parametrov-modeli-i-kross-validaciya)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Общий анализ задачи, данных и признаков"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Класс задачи - **обучение с учителем**, так как имеются объекты (пассажиры и их признаки) и тренировочные данные с ответами.\n",
"\n",
"Задача - это **бинарная классификация** - предсказание, выжил пассажир (1) или нет (0).\n",
"\n",
"#### Categorical features / Категориальные признаки\n",
"* **Pclass** - Passenger Class. Значения: 1, 2, 3. Класс каюты пассажира (1 - высокий, 3 - низкий).\n",
"* **Sex** - Значения: male, female. Пол пассажира.\n",
"* **Embarked** - Значения: S, C, Q. Порт посадки.\n",
"\n",
"#### Text features / Текстовые признаки\n",
"* **Name** - имя пассажира.\n",
"* **Ticket** - номер (название билета).\n",
"* **Cabin** - номер каюты, много пропущенных значений. По большей части известно для первого класса (PClass = 1). Можно почитать обсуждение [Discussion: is cabin an important predictor?](https://www.kaggle.com/c/titanic/discussion/4693)\n",
"\n",
"#### Numeric features / Числовые признаки\n",
"* **Age** - float. Возраст. Дробное число, если меньше 1 года.\n",
"* **SibSp** - integer. Количество супругов или братьев-сестёр на корабле.\n",
"* **Parch** - integer. Количество детей или родителей на корабле.\n",
"* **Fare** - float. Цена билета.\n",
"\n",
"\n",
"Общие наблюдения по данным: много пропусков в колонке Age (возраст) и Cabin (номер каюты) как в тренировочных, так и в тестовых данных.\n",
"\n",
"Есть несколько пропусков в колонке Embarked (порт посадки) и один пропуск в Fare (цена билета) в тестовых данных.\n",
"\n",
"Для качественной модели полезно будет заполнить эти пропуски в обеих таблицах или отбросить признаки с большими пропусками типа Cabin."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some useful info from [Titanic Kaggle Tutorial](https://www.kaggle.com/sashr07/kaggle-titanic-tutorial).\n",
"\n",
"\"In this case, understanding the Titanic disaster and specifically what variables might affect the outcome of survival is important. Anyone who has watched the movie Titanic would remember that **women and children were given preference to lifeboats** (as they were in real life). You would also remember the vast class disparity of the passengers.\n",
"\n",
"This indicates that **Age, Sex, and PClass may be good predictors** of survival.\"\n",
"\n",
"Вывод: имеет смысл изучить **предметную область, историю данных и внешнюю по отношению к данным информацию**: что в шлюпки сажали в первую очередь женщин и детей из высших классов."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Типы графиков, построение их в matplotlib на примере данных Titanic\n",
"\n",
"Рекомендации по созданию графиков по статье [Введение в визуализацию данных на Python & matplotlib](https://towardsdatascience.com/data-science-with-python-intro-to-data-visualization-and-matplotlib-5f799b7c6d82).\n",
"\n",
"* Выбрать подходящий тип графика.\n",
"* Подписать оси графика. Это полезно для собственного исследования и показа другим участникам.\n",
"* Добавить название графика.\n",
"* Подписать категории данных, где это возможно.\n",
"* Отметить наиболее интересные точки.\n",
"* Задействовать цвета и размеры для большей информативности.\n",
"\n",
"Часто используемые типы графиков: линейный (linear plot), точечный график или диаграмма рассеяния (scatter plot), коробчатая диаграмма/ящик с усами (box plot), столбчатая диаграмма (bar chart), круговая диаграмма (pie chart). \n",
"\n",
"### 2.1. Bar chart - столбчатая диаграмма\n",
"\n",
"\n",
"\n",
"Диаграмма с прямоугольными зонами (столбцами), длины которых пропорциональны величинам, которые они отображают. Прямоугольные зоны могут быть расположены вертикально или горизонтально.\n",
"\n",
"Столбчатая диаграмма отображает сравнение нескольких дискретных категорий. Одна её ось перечисляет сравниваемые категории, другая показывает измеримую величину. Иногда столбчатые диаграммы отображают несколько величин для каждой сравниваемой категории.\n",
"\n",
"Полезны для сравнения значений категорий между собой, а не по отношению к целому.\n",
"\n",
"[Из википедии](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%BE%D0%BB%D0%B1%D1%87%D0%B0%D1%82%D0%B0%D1%8F_%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 891\n",
"1 319\n",
"2 42\n",
"4 22\n",
"3 20\n",
"8 9\n",
"5 6\n",
"Name: SibSp, dtype: int64\n",
"0 891\n",
"1 319\n",
"2 42\n",
"3 20\n",
"4 22\n",
"5 6\n",
"8 9\n",
"Name: SibSp, dtype: int64\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAFCCAYAAADrMEr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xm8XeO9x/HPNwliSMQQSiJirKEtKpTSolytMb2U0qqhWu2lRSnVOR20tEWplhpqHmpqjS33IpQagxJCzZGaYojELMnv/vE8W5Zjn33WSc46a+fk+3699uustfYafmvtffaznmE9jyICMzOzjvrVHYCZmbUnJxBmZtaUEwgzM2vKCYSZmTXlBMLMzJpyAmFmZk05gTAzs6acQJiZWVNdJhCSDpA0WMmpku6StGVvBGdmZvUpk4P4ckRMBbYEhgJ7AUdUGpWZmdWuTAKh/Hdr4LSI+FdhmZmZ9VFlEohxkq4hJRBXSxoEzKw2LDMzq5u66qxPUj9gbeCxiJgiaQlgWETc2xsBmplZPcrkIAJYA9g/zy8MDKwsIjMzawtlchAnkIqUPhURq0taDLgmItbrjQDNzKweA0qs87GI+KikuwEi4mVJ81ccl5mZ1axMEdM7kvqTipqQNBRXUpuZ9XllEojjgL8AS0k6HLgJ+EWlUZmZWe26rIMAkLQasDnp+YdrI2JC1YGZmVm9ylRSrwRMioi3JG0KfAQ4MyKm9EJ8ZmZWkzJFTBcDMyStDJwCrACcW2lUZmZWuzIJxMyImA7sABwbEd8Clqk2LDMzq1vZVky7ArsDV+Rl81UXkpmZtYMyCcRewIbA4RHxuKQVgLOrDcvMzOpWqhWTmZnNe7p8klrS4+SH5IoiYsVKIjIzs7ZQpquNUYXpgcBOwOLVhGNmZu1itoqYJN0UERtXEI+ZmbWJMkVMHy3M9iPlKAZVFpGZmbWFMkVMRxWmpwNPADtXEo2ZmbUNt2IyM7OmunwOQtKiko6WdGd+HSVp0d4IzszM6lPmQbk/AdNIxUo7A1OB06oMyszM6lemN9d7ImLtrpaZmVnfUiYH8Yakd5u0StoIeKO6kMzMrB2UyUGsDZwBLEoaMOglYI+IuLf68MzMrC5d5iAi4p6IWIs0UNCHI2KdeTFxkHR/HjBpniXpvyU9JelVSet0c9vvSTolT4+UFJKaNrOWNEbS2Xl6RD5e/zk/g75N0nmSPlty3Xe/z8XrXUFMl0j6TEX7Pl3Sz6vYtyVlWjEtIek4YCxwvaRjJS1ReWS9SNITkrbosGxPSTc15iNizYgY28V+Wv7w9QG/Ab4REYtExN0d35Q0WtI9kqZKekHStZJGAkTELyLiK909YERMzMebMcfRNyFpb0kPSpom6TlJV0qa6x4ElfQRYC3g0jw/f25xOCknsI9LOqaxfpnvc2HfG0v6p6RXJL0k6WZJ65UM7Qjg8G6ezjyn4+9NuyhTB3E+MBnYEfhcnv5zlUFZc22Q8CwP3N/sjTzi4JnAwaTiyBWAPwAzey26bpK0CfALYNeIGASsDlxQb1Sz7WvAOTGrzPi7pF4P1if1fLAZ8L5EvSuSBpPGgfkdqQ+2YcBPgLfKbB8RtwODJY3qcmVrO2USiMUj4mcR8Xh+/RwYUnVg7aaYy5C0fn4mZGq+6zw6r3Zj/jsl37VtKKmfpB9IelLS85LOLD5HImn3/N6Lkn7Y4ThjJF0k6WxJU4E987FvkTRF0jOSjpc0f2F/IWlfSQ/nu+KfSVopbzNV0gXF9TucY9NYJS0g6VWgP/AvSY822Xxt4PGIuDaSaRFxcURMLJxLx2KML0t6Op/HwZ3E9J5cmaSx+Zxuzud3jaQly1zPJtYDbmnkhiLipYg4IyKm5X2dLulESf+bj3WDpOULx/q4pDvynfUdkj5eeO89x9V7i80G5s/0xfw53iFp6fzeopJOzdfkP5J+rly8JmnlHMMrSjm04o3aVsANHc7tLxHxdP48noiIMzuLDxgo6c/5PO+StFZevmq+NudFxIyIeCMirmkUM+c735sl/S7H9aCkzTtc57HANs0+AEkTJG1bmB+Qz+2jef5CSc/mfd8oac1O9vO+O/D8vVk5Ty8g6TeSJir9z54oacFm+8rrfzXHNk3SA4V4Vs/fwSlKxXTbF7YZK+krhfn3xJTj+Xr+33xZ0u+VrA6cCGyo9LsxJa+/dT72tPxd+HZn8ValTAJxvaRdlH48+knaGbiy6sDa3LGk4VcHAysx667zk/nvkFwscguwZ35tBqwILAIcDyBpDdJd9hdJw7guSrpDKxoNXERKlM8BZgDfApYkDeS0ObBvh20+A6wLbAAcCpyUj7Ec8CFg107Oq2msEfFWRCyS11krIlZqsu1dwGqSjpG0maRFmqzT0WbAKsCWwGEtfsg7+gJpIKulgPmBb0Pp61l0G/BpST+RtJGkBZqs80XgZ6TrfQ/pM0DS4qT/g+OAJYCjgStVrvh1jxzbcnnbrzOrZeAZpC5tVgbWIV2bxo/Oz4BrgMWA4aS7eiQtTMqxPVQ4xq3AQUo3Cx+WpC5iGg1cSMolnAv8VdJ8wL9JY9KfIWkrSYs12fZjwGOka/Rj4JJ8fRomkIq/mjmP934fPw28EBF35fm/kb4jS5G+Y+d0cR6dOZKU2K1NurbDgB81W1HSTsAY0iiag4HtgRfz9bic9BksBXwTOEfSB7sRx7akxHst0nNln46ICaTvwC35d6NxA34q8LWcu/0QcF03jtMzIqLli/SQ3EzgHdIXd2ZeNg2Y2tX2c8OL1L/Uq8CUwut14KYO62yRp28kZbOX7LCfkaSxMwYUll0L7FuY/2C+lgNIX9DzCu8tBLxdOM4Y4MYuYj+QdKfYmA9go8L8OOA7hfmjgN92sq9OYy3se+UWsWxASiwnA28CpwOLFM7l7A7XabXCtr8CTm2xbiOGscAPCtvtC/w9T7e8np3EvBXpn35K/g4cDfTP750OnF9YdxFSAr0c8CXg9g77ugXYs+P3pck5fRn4J/CRDtsvTSq6WbCwbFfg+jx9JimxH95hu2H5Gg0sLOsP7AfcnPf5NKn1YbPv8xjg1sJ7/YBngE/k+dXztZhE+g24DFg6v7dn3rcK298OfKkw/1Xguk6u/8qk35KF8vw5wI86WXdIPs9FC5/Pzwtx3NRh/cj7F/AasFLhvQ1JOd5mx7kaOKDJ8k8AzwL9CsvOA8YUvptfKbz3nphyPBsX5i8ADmsR/0RS0eHgVr8BVb7KtGIaFBH9ImK+iBiQpwfl1+Cutp+LfDYihjRevP+uvGhv0t3Ig7l4YNsW6y4LPFmYf5KUOCyd33uq8UZEvA682GH7p4ozklaVdEXOdk8llaEv2WGb5wrTbzSZ7+zuvlWsXYqIWyNi54gYSvpn+iTw/RabFM/tyXz8Mp4tTL/OrPNpeT1z9r3xGpHX+VtEbEe6cx5N+kctVqYX9/cqqZn3srz/WjXOoVWOpeEs0o/Q+UpFbL/Kd6fLk8Z7fyYXYUwB/ki6W4WUGxRwey7e+HJePiX/fbdyPVJx0O8jYiPSD+vhwJ9ycUYzxfOcSUoMls3zEyJiz4gYTrqTXRb4bWHb/0T+RStch+JnOagQ43tExCOkHMZ2khYi3a2fCyCpv6QjJD2av+tP5M06ft+7MpR0szCucF3/npc3sxzQrBh1WeCpfH0ayn7mDZ19d5vZEdgaeDIXLW7YjeP0iDKtmDbKWVgk7abUL9OI6kNrXxHxcETsSvrHPRK4KF+jZg+VPE36x28YQboLe450lza88UYuE+1YRNFxnycADwKr5AT6e6QfjZ7QKtZuiYg7gEtIPyidWa7DsZ7u7nE6aHk9I2XfG6+JHeKdGRHXkrLxxZjfjTEXmy2e4+x4rRrn8J88/RrpR6nhA4VjvRMRP4mINYCPk4oddif9SL9Fypk2blYGR8SaebtnI+KrEbEs6c7yD5JWjojXSD9oqza7KJHqDX4PvAys0WydDufZj3Qd3/d5RMSDpDv34jUa1qEIq+NnuTrwr06OC7OKmUYDD+REA1JR4mhgC1KR3MhGiE328Z7rLekDhfdeIN0YrVm4rovGrGLTjp4iFR139DSwXL4+DaU+8xKajdp5R0SMJv3O/JUaGlCUqYM4AXhdqdLqUFKKeValUbW5nFAOzXcSjTujGaSilZmk8vuG84BvSVoh/8D8AvhzREwn1S1sp1TZOT+p2KqrH/tBpP6wXpW0GvA/PXZirWNtSakp5FclLZXnVyPdDd7aYrMfSlpIqeJxL+a8dVy3rqdSs9xdJC2WKwvXBzbpEPPW+dzmJ9UB3BYRTwFXAatK+oJSxernST++V+Tt7gF2kTSfUguezxWOu1muF+hP+izfAWZExDOk8u2jJA3OdX4rKbW2QtJOkhoJ4MukH5VG89+rcuyNYxwoaVNJC+b49iB9dzprybSupB2UGgMcSEqobpW0mqSDG8eVtBzpx7x4jZYC9s/nuhMpQbiq8P4mpLqEzpxPqmv5H3LuIRuU43iR9MP7ixb7+BewpqS1JQ0kFZsB7+aITgaOKXw/h0n6dCf7OgX4tqR18/diZaXGCbeREoFD87luCmyX44f0me+Qv9Mrk0oaynoOGJ6/Z41myl+UtGhEvEP6nlTS1LuVMgnE9Jx9HE2qmD0WDxj0GeB+pZY9xwK7RMSbuUjjcODmnJXdgNTZ4VmkeovHSWXz3wSIiPvz9Pmku99pwPO0bkL4bdKd1TTSl74nmxx3GmsJU0gJwn35uvwd+AupbqEzNwCPkOo+fhMR18xm3MBsXc+XSeXjD5P+Ac8Gfh0RxYrQc0kVry+RKv6/mI/1IunO/2DSD9ihwLYR8ULe7oeku9CXSQlV8YfvA6TEbCqpeOWGfGxIOYn5gQfytheRKtwhVW7elq/vZaRy8sfzeycBXyzcyb9Bqm96lnQHvR+wY0Q81sm1uBT4fD7ml4Ad8g/TNFIl9G2SXiMlDOPzeTfcRqpIfoH0/f9cvj4oPS/xWqTmrk3lhPEWUm6q+H0+k3RD+p98PTq92YiIfwM/Bf6P9Hl2fKbgO6Tv2q25uOr/SHVszfZ1YT6Pc/P5/5XUmvNt0nd8q3yufwB2z7kqgGNIdV7PkRobdKdC/TpSE/JnJTW+Q18Cnsjxfh3YrRv76xFlutq4gfTPvhepTHkycE9EfLj68OYt+a59Cqn46PGu1rfW5vR6SjodmBQRP+jp2Kog6Vzggoj4ay8ec09SxWzTIYglXUxqfHBVs/etvZXJQXyedAe2d0Q8S6qQ+XWlUc1DJG2Xs6QLk55Uvo9ZlXHWTfPy9YyIL/Rm4lBGROzoxGHuVaYV07MRcXRE/CPPT4zCAzc2x0Yzq9JzFVJxlYf5m32+nmY9xEOOmplZU2WKmMzMbB7UsvO33AzvjIjo9drzMpZccskYOXJk3WGYmc1Vxo0b90J+oLWllglERMyQNFTS/LmJV1sZOXIkd955Z91hmJnNVSR17AWgqTLdRz9Batd/GekhEQAi4uhOtzAzs7lemQSi0SKkH35AzsxsntFlAhERPwFQGmUrcodlZmbWx5XprO9Dku4mPV5/v6Rx6mTQDjMz6zvKNHM9CTgoIpaPiOVJfbCcXG1YZmZWtzIJxMIRcX1jJtJA5wtXFpGZmbWFMpXUj0n6IbO6+N6N1NOnmZn1YWVyEF8mjbx0SX4tSerZ1czM+rAyrZheBvbvhVgqN/KwKyvd/xNHbFPp/s3MepP7YjIzs6acQJiZWVNOIMzMrKkyD8r9Kg+gPp+kayW9IKkte3c1M7OeUyYHsWVETCUN0D4JWBU4pNKozMysdmUSiPny362B8yLipQrjMTOzNlHmQbnLJT0IvAHsK2ko8Ga1YZmZWd26zEFExGHAhsCoiHgHeJ00MLyZmfVhXeYgJO1QmG5MviJpZkQ8X1VgZmZWrzJFTHuTchCNDvs2BW4FVpX004g4q7MNzcxs7lUmgZgJrB4RzwFIWho4AfgYcCOzOvEzM7M+pEwrppGNxCF7Hlg1t2Z6p5qwzMysbmVyEP+QdAVwYZ7fEbhR0sLAlMoiMzOzWpVJIPYjJQobAQLOBC6OiAA2qzA2MzOrUZnuvgO4KL/MzGweUaYvph0kPSzpFUlTJU2TNLU3gjMzs/qUKWL6FbBdREyoOhgzM2sfZVoxPTe7iYOkb0m6X9J4SedJGihpBUm35VzJnyXNn9ddIM8/kt8fOTvHNDOznlEmgbgz/3Dvmoubdig+Xd0ZScNIQ5WOiogPAf2BXYAjgWMiYhXgZdKDeOS/L0fEysAxeT0zM6tJmQRiMKn/pS2B7fJr25L7HwAsKGkAsBDwDPApZlV4nwF8Nk+PzvPk9zdXoW8PMzPrXWVaMe01OzuOiP9I+g0wkdQT7DXAOGBKREzPq00ChuXpYcBTedvpkl4BlgBeKO5X0j7APgAjRoyYndDMzKyEThMISYdGxK8k/Q6Iju9HxP6tdixpMVKuYAXSA3UXAls1WbWx72a5hWbHPQk4CWDUqFHve9/MzHpGqxxEo2L6ztnc9xbA4xExGUDSJcDHgSGSBuRcxHDg6bz+JGA5YFIukloU8OBEZmY16TSBiIjL898zOlunCxOBDSQtRCpi2pyU2FwPfA44H9gDuDSvf1mevyW/f11+SM/MzGrQqojpcpoU8TRExPatdhwRt0m6CLgLmA7cTSoauhI4X9LP87JT8yanAmdJeoSUc9ilG+dhZmY9rFUR02/mdOcR8WPgxx0WPwas32TdN4Gd5vSYZmbWM1oVMd3QmM4Ps61GylE8FBFv90JsZmZWozJDjm4DnAg8SmpptIKkr0XE36oOzszM6lOmL6ajgM0i4hEASSuR6hGcQJiZ9WFlnqR+vpE4ZI+RRpUzM7M+rFUrpkZ/S/dLugq4gFQHsRNwRy/EZmZmNWpVxLRdYfo5YJM8PRlYrLKIzMysLbRqxTRbfTCZmVnfUFlfTGZmNnersi8mMzObi3WrLyZJ/YBFIsJjUpuZ9XFdNnOVdK6kwZIWBh4AHpJ0SPWhmZlZnco8B7FGzjF8FrgKGAF8qdKozMysdmUSiPkkzUdKIC6NiHdo0curmZn1DWUSiD8CTwALAzdKWh5wHYSZWR/XZQIREcdFxLCI2DoP4DMR2Kz60MzMrE5lOut7j5xITK8gFjMzayNlipjMzGwe1GkCIWmn/HeF3gvHzMzaRascxHfz34t7IxAzM2svreogXpR0PWkEucs6vhkR21cXlpmZ1a1VArEN8FHgLNKocmZmNg9p1RfT28Ctkj4eEZMlDUqL49XeC8/MzOpSphXT0pLuBsYDD0gaJ+lDFcdlZmY1K5NAnAQcFBHLR8QI4OC8zMzM+rAyCcTCEXF9YyYixpK63TAzsz6szJPUj0n6IamyGmA34PHqQjIzs3ZQJgfxZWAocEl+LQl4vGozsz6uyxxERLwMePxpM7N5jPtiMjOzppxAmJlZUy0TCEn9JX2rt4IxM7P20TKBiIgZwOheisXMzNpImWauN0s6Hvgz8FpjYUTcVVlUZmZWuzIJxMfz358WlgXwqZ4Px8zM2kWZZq4ef9rMbB7UZSsmSUtLOlXS3/L8GpL2rj40MzOrU5lmrqcDVwPL5vl/AwdWFZCZmbWHMgnEkhFxATATICKmAzMqjcrMzGpXJoF4TdISpIppJG0AvFJm55KGSLpI0oOSJkjaUNLikv5X0sP572J5XUk6TtIjku6V9NHZPiszM5tjZRKIg4DLgJUk3QycCXyz5P6PBf4eEasBawETgMOAayNiFeDaPA+wFbBKfu0DnFD2JMzMrOeVacV0l6RNgA8CAh6KiHe62k7SYOCTwJ55P28Db0saDWyaVzsDGAt8h/RA3pkREaShTodIWiYinunuSZmZ2ZzrMoGQNBDYF9iYVMz0D0knRsSbXWy6IjAZOE3SWsA44ABg6caPfkQ8I2mpvP4w4KnC9pPysvckEJL2IeUwGDFiRFfhm5nZbCpTxHQmsCbwO+B4YA1mDR7UygDgo8AJEbEO6Snsw1qsrybL4n0LIk6KiFERMWro0KElwjAzs9lR5knqD0bEWoX56yX9q8R2k4BJEXFbnr+IlEA81yg6krQM8Hxh/eUK2w8Hni5xHDMzq0CZHMTdueUSAJI+Btzc1UYR8SzwlKQP5kWbAw+QKrz3yMv2AC7N05cBu+fWTBsAr7j+wcysPp3mICTdRyrimY/0wz0xvzWC9ENfxjeBcyTNDzxGGqq0H3BBfhp7IrBTXvcqYGvgEeB1PKypmVmtWhUxbTunO4+Ie4BRTd7avMm6Aew3p8c0M7Oe0WkCERFPNqbzw2zLdVj/yfdtZGZmfUaZZq4/Iz3L8CizWhW5u28zsz6uTCumnYGV8oNuZmY2jyjTimk8MKTqQMzMrL2UyUH8ktTUdTzwVmNhRGxfWVRmZla7MgnEGcCRwH3kLr/NzKzvK5NAvBARx1UeiZmZtZUyCcQ4Sb8kPelcLGK6q7KozMysdmUSiHXy3w0Ky9zM1cysjyszHsRmvRGImZm1lzIPyv2o2fKI+GnPh2NmZu2iTBHTa4XpgaQ+miZUE46ZmbWLMkVMRxXnJf2GVGFtZmZ9WJknqTtaiDScqJmZ9WFl6iAa40IA9AeGAq5/MDPr48rUQRTHhZgOPBcR0yuKx8zM2kSXRUx5XIhJwDukHMSykkZUHZiZmdWrTBHTN4EfA88xqy+mAD5SYVxmZlazMkVMBwAfjIgXqw7GzMzaR5lWTE8Br1QdiJmZtZcyOYjHgLGSruS9nfUdXVlUZmZWuzIJxMT8mj+/zMxsHlDmSeqf9EYgZmbWXmbnSWozM5sHOIEwM7OmnECYmVlTXSYQkn4labCk+SRdK+kFSbv1RnBmZlafMjmILSNiKqlPpknAqsAhlUZlZma1K5NAzJf/bg2cFxEvVRiPmZm1iTLPQVwu6UHgDWBfSUOBN6sNy8zM6lamN9fDgA2BURHxDmkI0tFVB2ZmZvXqNAch6VMRcZ2kHQrLiqtcUmVgZmZWr1ZFTJsA1wHbNXkvcAJhZtandZpARMSP89+9ei8cMzNrF2UGDFoA2BEYWVw/IjwutZlZH1amFdOlpPEgxlHo7tvMzPq2MgnE8Ij4TOWRmJlZWynzoNw/JX14dg8gqb+kuyVdkedXkHSbpIcl/VnS/Hn5Ann+kfz+yNk9ppmZzblOEwhJ90m6F9gYuEvSQ5LuLSwv6wBgQmH+SOCYiFgFeBnYOy/fG3g5IlYGjsnrmZlZTVoVMW07pzuXNBzYBjgcOEjpQYpPAV/Iq5wBjAFOID18NyYvvwg4XpIiIuY0DjMz675OcxAR8WREPAn8vDFdXFZy/78FDgVm5vklgCkRMT3PTwKG5elhwFP52NNJFeNLdNyhpH0k3SnpzsmTJ5cMw8zMuqtMHcSaxRlJ/YF1u9pI0rbA8xExrri4yapR4r1ZCyJOiohRETFq6NChXYVhZmazqVVXG98FvgcsKGlqYzHwNnBSiX1vBGwvaWtgIDCYlKMYImlAziUMB57O608ClgMmSRoALAq451gzs5q0KmL6ZUQMAn4dEYPza1BELBER3+1qxxHx3YgYHhEjgV2A6yLii8D1wOfyanuQnrMAuCzPk9+/zvUPZmb1KdOba5eJQTd9h1Rh/QipjuHUvPxUYIm8/CDgsB4+rpmZdUOZB+XmWESMBcbm6ceA9Zus8yawU2/EY2ZmXStTSW1mZvOgLhMISSvlDvuQtKmk/SUNqT40MzOrU5kcxMXADEkrk+oJVgDOrTQqMzOrXZkEYmZukvrfwG8j4lvAMtWGZWZmdSuTQLwjaVdSE9Qr8rL5qgvJzMzaQZkEYi9gQ+DwiHhc0grA2dWGZWZmdeuymWtEPADsX5h/HDiiyqDMzKx+ZYYcXQX4JbAGqcsMACJixQrjMjOzmpUpYjqN1B33dGAz4EzgrCqDMjOz+pVJIBaMiGsB5e6+x5DGdDAzsz6sTFcbb0rqBzws6RvAf4Clqg3LzMzqViYHcSCwEKmiel3gS8zqddXMzPqoMq2Y7siTr5KavJqZ2TygTCumVYFDgOWL60eE6yF625hFK97/K9Xu38zmKmXqIC4ETgROBmZUG46ZmbWLMgnE9Ig4ofJIzMysrbQak3rxPHm5pH2BvwBvNd6PCI8XbWbWh7XKQYwDAlCeP6TwXgB+ktrMrA/rNIGIiBV6MxAzM2svHnLUzMyacgJhZmZNOYEwM7OmukwgJG0kaeE8vZukoyUtX31oZmZWpzI5iBOA1yWtBRwKPEnq8tvMzPqwMgnE9IgIYDRwbEQcCwyqNiwzM6tbmSepp0n6LrAb8ElJ/YH5qg3LzMzqViYH8XnSE9R7R8SzwDDg15VGZWZmtWuZg8i5hbMjYovGsoiYiOsgzMz6vJY5iIiYQaqgrrifaTMzazelhhwF7pP0v8BrjYURsX9lUZmZWe3KJBBX5peZmc1Dygw5eoakBYEREfFQL8RkZmZtoMyT1NsB9wB/z/NrS7qs6sDMzKxeZZq5jgHWB6YARMQ9gLsCNzPr48o+Sd1xNPuoIhgzM2sfZSqpx0v6AtBf0irA/sA/qw3LzMzqViYH8U1gTdLT1OcBU4EDqwzKzMzqV6YV0+vA9/PLzMzmEV0mEJIu5/11Dq8AdwJ/jIg3O9luOVKXHB8AZgInRcSxkhYH/gyMBJ4Ado6IlyUJOBbYGngd2DMi7pqdkzIzszlXpojpMeBV4OT8mgo8B6ya5zszHTg4IlYHNgD2k7QGcBhwbUSsAlyb5wG2AlbJr31I41CYmVlNylRSrxMRnyzMXy7pxoj4pKT7O9soIp4BnsnT0yRNIPUEOxrYNK92BjAW+E5efmYee+JWSUMkLZP3Y2ZmvaxMDmKopBGNmTy9ZJ59u8xBJI0E1gFuA5Zu/Ojnv0vl1YYBTxU2m5SXddzXPpLulHTn5MmTyxzezMxmQ5kcxMHATZIeBUR6SG7fPE71GV1tLGkR4GLgwIiYmqoamq/aZNn7nreIiJOAkwBGjRrl5zHMzCpSphXTVfn5h9VIP+IPFiqmf9tqW0nzkRKHcyLikrz4uUbRkaRlgOfz8knAcoXNhwNPlz8VMzPrSWWKmADWJT0L8RFgZ0m7d7VBbpV0KjAhIo64qM0wAAAQ7ElEQVQuvHUZsEee3gO4tLB8dyUbAK+4/sHMrD5lmrmeBaxE6rBvRl4cdD2q3EbAl0hjSdyTl30POAK4QNLewERgp/zeVaQmro+QmrnuVf40zMysp5WpgxgFrJFbF5UWETfRvF4BYPMm6wewX3eOYWZm1SlTxDSe9LCbmZnNQ8rkIJYEHpB0O6k/JgAiYvvKojIzs9qVSSDGVB2EmZm1nzLNXG+QtDywSkT8n6SFgP7Vh2ZmZnUqM+ToV4GLgD/mRcOAv1YZlJmZ1a9MJfV+pCarUwEi4mFmdY9hZmZ9VJkE4q2IeLfPJUkD8JCjZmZ9XpkE4gZJ3wMWlPRfwIXA5dWGZWZmdSuTQBwGTAbuA75GeuL5B1UGZWZm9SvTimkmebCgPBrc8O4+VW1mZnOfMq2YxkoanBOHe4DTJB3d1XZmZjZ3K1PEtGhETAV2AE6LiHWBLaoNy8zM6lYmgRiQx23YGbii4njMzKxNlEkgfgpcDTwSEXdIWhF4uNqwzMysbmUqqS8kNW1tzD8G7FhlUGZmVr8yldS/ypXU80m6VtILknbrjeDMzKw+ZYqYtsyV1NuSxo1eFTik0qjMzKx2ZRKI+fLfrYHzIuKlCuMxM7M2UWY8iMslPQi8AewraSjwZrVhmZlZ3brMQUTEYcCGwKiIeAd4DRhddWBmZlavMjkISGNA/JekgYVlZ1YQj5mZtYkuEwhJPwY2BdYgddS3FXATTiDMzPq0MpXUnwM2B56NiL2AtYAFKo3KzMxqVyaBeCP36Dpd0mDgeWDFasMyM7O6lamDuFPSEFKX3+OAV4HbK43KzMxqV6arjX3z5ImS/g4Mjoh7qw3LzMzqVqoVk6QdgI1JY1HfBDiBMDPr48r0xfQH4OukIUfHA1+T9PuqAzMzs3qVyUFsAnyoMcyopDNIiYWZmfVhZVoxPQSMKMwvh4uYzMz6vDI5iCWACZIaLZfWA26RdBlARGxfVXBmZlafMgnEjyqPwuYJHz7jw5Xu/749XPJp1pPKNHO9oTcCMTOz9lKmDsLMzOZBTiDMzKypMr25bgtclftjMrO50O+/fl2l+9/vxE9Vun+rR5lK6l2AYyVdDJwWERMqjsmsLU1YbfXK9r36g/63svZTZkS53YB1gEeB0yTdImkfSYN6OhhJn5H0kKRHJB3W0/s3M7PySvXFFBFTcw5iQeBA4L+BQyQdFxG/64lAJPUHfg/8FzAJuEPSZRHxQE/s38ysLpMO+0el+x9+xCcq2W+ZOojtgC8DKwFnAetHxPOSFgImAD2SQADrA49ExGP5uOeTxr52AmE2jzvq89tWuv+D/3xFpfufWyl3sdT5CtKZwCkRcWOT9zaPiGt7JBDpc8BnIuIref5LwMci4hsd1tsH2CfPfpDUFUhVlgReqHD/VXP89ZmbYwfHX7eq418+IoZ2tVKZB+V2b/FejyQOmZodoskxTwJO6sHjdkrSnRExqjeOVQXHX5+5OXZw/HVrl/jLdPe9g6SHJb0iaaqkaZKmVhDLJFJHgA3DgacrOI6ZmZVQ5kG5XwHbR8SiETE4IgZFxOAKYrkDWEXSCpLmJzWvvayC45iZWQllWjE91xvPPkTEdEnfAK4G+gN/ioj7qz5uF3qlKKtCjr8+c3Ps4Pjr1hbxl6mkPhb4APBX4K3G8oi4pNrQzMysTmVyEIOB14EtC8sCcAJhZtaHdZmDMDOzeVOZB+UGAnsDawIDG8sj4ssVxmVmZjUr04rpLFIdxKeBG0jNT6dVGVRdJK0m6TuSjpN0bJ6uroc2e1e+9ptLWqTD8s/UFVN3SFpf0np5eg1JB0nauu64Zld+QHauJGnjfP237Hrt+kmaX9LukrbI81+QdLyk/STNV2tsJSqp746IdSTdGxEfyQFfHRF9qn9fSd8BdgXOJz2TASkx3AU4PyKOqCu2OSVpr4g4re44OiNpf2A/UtctawMHRMSl+b27IuKjdcbXFUk/BrYi5cj/F/gYMBbYgvS/cnh90XWtMb58cRGwGXAdtP+485Juj4j18/RXSd+lv5DqTS9v9/9dSeeQvjsLAVOARUh1vJuTfqP3qC22EgnE7RGxvqQbgX2BZ4HbI2LF3giwt0j6N7BmRLzTYfn8wP0RsUo9kc05SRMjYkTdcXRG0n3AhhHxqqSRwEXAWRFxbOMGpdYAu5DjXxtYgPT/MTx3cLkgcFtEfKTWALsg6S5Sn2enkBqgCDiPdHPU9sMOF78jku4Ato6IyZIWBm6NiGoHQ59DhZvvAcB/gGUjYoYkAf+q8/tTphXTSZIWA35IenBtEeBHlUZVj5nAssCTHZYvk99ra5Lu7ewtYOnejGU29I+IVwEi4glJmwIXSVqe5l2wtJvpETEDeF3SoxExFSAi3pDU9t8dYBRwAPB94JCIuEfSG+2eMBT0y79R/Ug3vZMBIuI1SdPrDa2UfvlGdGFSLmJR4CXSDUetRUxl+mI6JU/eAPSpXEMHBwLXSnoYeCovGwGsDHyj063ax9KkeqKXOywX8M/eD6dbnpW0dkTcA5BzEtsCfwLa+u4ve1vSQhHxOrBuY6GkRZkLbi7yaJHHSLow/32OkkMBtIlFgXGk73pI+kBEPJvrs+aGG4xTgQdJDwh/H7hQ0mPABqQi79qUKWIaAuwOjKTwpYmI/SuNrAaS+pG6HR9G+mJNAu7Id4dtTdKppBH/bmry3rkR8YUawipF0nDSXfizTd7bKCJuriGs0iQtEBFvNVm+JLBMRNxXQ1izTdI2wEYR8b26Y5kTeUiCpSPi8bpj6YqkZQEi4un8m7sFMDEibq81rhIJxD+BW4H7KNwNRcQZ1YZmZmZ1KpNAtH0rEjMz63llEohvAa8CV/DevpheqjY0MzOrU5kH5d4Gfg3cQqoIGgfcWWVQ1n2SQtJRhflvSxrTQ/s+PY/4VylJO0maIOn6kutfJWmIpJGSxneyzlhJo4rr92TMVo6k70u6J79mFKb3l/R1Sbvn9fZslMfP5nFGSTqu5yKft5VpqXAQsHJEzM3D980L3gJ2kPTLdvqsJPXvRiX/3sC+EVEqgYiIrfMxSv3oN9avUzevR5+RHxY8HEDSqxGxdier7gmMZzYHC4uIO/ENbI8pk4O4n9Sbq7W36aQ+5L/V8Y2OOQBJr+a/m0q6QdIFkv4t6QhJX5R0u6T7JK1U2M0Wkv6R19s2b99f0q8l3SHpXklfK+z3eknnkho3dIxn17z/8ZKOzMt+BGwMnCjp1x3WX0bSjfmOc7ykT+TlT+SWQgADJJ2R47got2DpeNwnJC2ZcxwTJJ0s6X5J1+SH2pC0Xt7HLfncxufla+brck9+/30PTjY7r8b1lvRTSbcBG3bYZn9JD+R9np+XjZF0lqTrlEZz/GperkZM+TifL1zvKwr7PF7Snnn6iML+f5OXDZV0cf7c7pC0UV6+SeHO/m5Jg5qc40H5+OMlHZiXdXo9y8jn++38HR0FnJNjWFDSj3KM4yWdJEl5m7GSjsyfyb8L34l3r4WkRSSdlq/VvZJ2LBuTZRHR8kV6ZP3fwB+B4xqvrrbzq3dfpHqiwcATpHbh3wbG5PdOBz5XXDf/3ZT0aP8ypIdy/gP8JL93APDbwvZ/J91QrEJq/jsQ2Af4QV5nAdKd2wp5v68BKzSJc1lgIjCUlIO9Dvhsfm8sMKrJNgcD38/T/YFBefoJ0uDuI0lPAG+Ul/8J+HbHfXZYfzqwdl5+AbBbnh4PfDxPHwGMz9O/A76Yp+cHFuzGeQWwcyef29PAAnl6SP47BvgXsGCO96m8/x1JXXn0Jz33MjF/dpsCVxT2eTzpTnxx4CFm1TU29n8usHGeHgFMyNOXF67hIsCADrGuS0rwF87v3w+s0+p6dvZd7TA/ptnnlecXL0yfBWxXWO+oPL018H+F7/QVefpI8nc4zy9W9//p3PYqk4P4Kylr+E9m1UGMK7Gd9bJIT/CeCXTnGZU7IuKZSO34HwWuycvvI/3jN1wQETMj4mHgMWA1Ul83u0u6B7gNWIKUgEDqjqVZ+/P1gLERMTkipgPnAJ/sKkZgL6U6lQ9HRLPOIp+KWc9LnE3KjbTyeOQH80jf55FKRVWDIqLxYOG5hfVvAb6n1GfX8hHxRjfOawZwcSdx3Eu6Y96N9CPbcGlEvBGpuPB60vM5GwPnRcSMiHiO9PDqei3OcSrwJnCKpB2YVRKwBXB8/twuAwbn3MLNwNFKfWMNyedRtDHwl4h4LdKT75cAn8jvve96toirOzaTdJtSdyafIvUq3dAYk6az420B/L4xExEdHyK1LpR5ktrPO8xdfgvcBRQ755tOLk7MWfT5C+8VH/CaWZifyXu/Hx2buzX67PlmRFxdfEOpq4zXOomv20+2RsSNkj4JbAOcJenXEdGxt9Fm8bVSPO8ZpLv1TmOLiHNzEdE2wNWSvhIR1xVWaXVeb0bn9Q7bkBKS7YEfSmr8AHZ2vZt59/PNBuaYp0tan9Tp2y6kHgE+ldfdsEkid4SkK0l35LdK2iIiHiy83+ocm13POaI01MAfSDmKp/INwsDCKo1jzqD5b5no+ntgLZTJQdhcJFLz4wtIFb4NTzCrC4jRzF7/LjtJ6qdUL7EiqejiauB/lLsklrSqUgdprdwGbJLrAvqTetBt2eePUp9Mz0fEyaRuCZo9lzNCUqN8f1fgfU+UdyXfYU6TtEFetEshhhWBxyLiONJdd8cO1GbnvPoBy0WqlD8UGEIqugEYLWmgpCVIxSZ3ADcCn1eq+xlKSlhuJ/UftoakBZS699g8738RYNGIuIrUlUyjYvgaCt3HSFo7/10pIu6LiCNJxYWrdQj5RuCzkhbKn/N/A/9odY6zYRrQqPtoJAYv5HPpbku6jue52JyHN2+Zm/pbsfKO4r39R50MXCrpduBaOr+7b+Uh0g/e0sDXI+JNSaeQsvZ35ZzJZOCzrXYSEc9I+i6p2ETAVZG79m5hU+AQSe+Q6lp2b7LOBGAPSX8EHgZOKHtiHewNnCzpNVI59yt5+eeB3XIMzwI/LW40m+fVHzg7/6gLOCYipuR62NuBK0l1BD+L1AXDX0iV3P8i3RkfGrl7EkkXkIqrHgbuzvsfRPrcB+b9Nxow7A/8XqmDxwGkH/6vAwdK2ox0R/4A8LcO53iXpNNzbACnRMTdSj3w9pTTSQ0V3sjnejKpuPMJUiLZHT8nned40jn9BA+V3C1lHpRbMSIe66V4zGolaZFcvo6kw0h9KR3QyzGMIVXk/qY3j2vWUZkcxOmShjEri/uPmMs6HzPrhm1yTmAAqehmz3rDMatPlzkIeHfQnPVIWf2vAYtExOLVhmZmZnXqMgchaWNSU7ZPkCrRrqDnK6bMzKzNlKmDmEFq0fBLUsXb270RmJmZ1avsgEEbkZrUrUdqH39LRPyw+vDMzKwuZR6Um6I0/N1ywHDg49Q8TqqZmVWvTA7iUVIb+JtIdQ+3uZjJzKzvK5NA9Is0qLmZmc1DynS1saykv0h6XtJzSt0ED688MjMzq1WZBOI0Ut8zywLDSF0Cn9ZyCzMzm+uVKWK6JzqM/tRsmZmZ9S1lchAvSNot9yDZP/db/2LVgZmZWb3K5CBGkEao2pDUg+Q/gQMi4snqwzMzs7qU6ovJzMzmPZ0+KCfpd7QYjSkiujOspZmZzWVaPUl9Z2H6J8CPK47FzMzaSNnuvu+OiHV6IR4zM2sTZcekdkWFmdk8pmwCYWZm85hOi5gkTWNWzmEh4PXGW0BExODqwzMzs7q4mauZmTXlIiYzM2vKCYSZmTXlBMLMzJpyAmFmZk05gTAzs6b+Hyw4UQv+vv0CAAAAAElFTkSuQmCC\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Show count (histogram) of different SiblingSpouses (SibSp) values - from 0 to 5\n",
"# Покажем гистограмму количества пассажиров с 0-5 братьями-сёстрами или супругами на корабле\n",
"sib_sps = df['SibSp'].value_counts()\n",
"print(sib_sps)\n",
"\n",
"# need to sort the index (first column values) for more obvious data representation\n",
"# значения индекса не отсортированы, полезно это исправить\n",
"sib_sps.sort_index(ascending=True, inplace=True)\n",
"print(sib_sps)\n",
"\n",
"# Add title and axis names\n",
"plt.title('Histogram of Sibling-Spouses(SibSp) value counts')\n",
"plt.xlabel('Number of siblings or spouses on Titanic')\n",
"plt.ylabel('How many passengers has this number of siblings or spouses')\n",
"\n",
"sib_sps.plot(kind='bar')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2. Pie chart - круговая диаграмма\n",
"\n",
"\n",
"\n",
"Представляют данные в виде долей целого и обычно используются для сравнения групп. Рекомендуется отображать не более 7-10 категорий, чтобы не перегрузить диаграмму.\n",
"\n",
"Построим распределение пассажиров по классам в виде круговой диаграммы."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"3 709\n",
"1 323\n",
"2 277\n",
"Name: Pclass, dtype: int64\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Show passenger count by classes as a pie chart\n",
"# Покажем количество пассажиров в трёх классах на круговой диаграмме\n",
"passenger_classes = df['Pclass'].value_counts()\n",
"print(type(passenger_classes))\n",
"print(passenger_classes)\n",
"\n",
"plt.title('Passengers distribution by classes 1, 2, 3')\n",
"\n",
"# this uses matplotlib underneath\n",
"# эта визуализация основана на matplotlib, поэтому установка названия диаграммы выше сработала :)\n",
"# параметр autopct показывает, как представлять данные на секторах в процентах\n",
"passenger_classes.plot(kind='pie', autopct='%1.1f%%')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Упражнение 1. Нарисовать круговую диаграмму пассажиров по порту посадки"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# Exercise: draw pie chart for Embarked column"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3. Scatter plot - точечный график\n",
"\n",
"\n",
"\n",
"**Диаграмма рассеяния (также точечная диаграмма, англ. scatter plot)** — математическая диаграмма, изображающая значения двух переменных в виде точек на декартовой плоскости.\n",
"\n",
"Хорошо иллюстрируют зависимость величин, помогают определить их корреляцию. Независимую переменную обычно отображают на горизонтальной оси, а зависимую - на вертикальной.\n",
"\n",
"[Из Википедии](https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D1%80%D0%B0%D1%81%D1%81%D0%B5%D1%8F%D0%BD%D0%B8%D1%8F)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# increase plot size in the Jupyter window\n",
"# увеличим размер графика\n",
"plt.rcParams['figure.figsize'] = [14, 9]\n",
"\n",
"# scatter plot of women by age ticket fare on red - died, green survived\n",
"# диаграмма рассеяния для женщин: по горизонтали - возраст, по вертикали цена билета, цвет точки - выжила или нет\n",
"df_female = df[df.Sex == 'female']\n",
"\n",
"df_female_live = df_female[df_female.Survived == 1]\n",
"df_female_dead = df_female[df_female.Survived == 0]\n",
"\n",
"plt.scatter(df_female_live.Age, df_female_live.Fare, s=50, c='g')\n",
"plt.scatter(df_female_dead.Age, df_female_dead.Fare, s=50, c='r')\n",
"\n",
"# добавим название диаграммы и подписи осей\n",
"# Add title and axis names\n",
"plt.title('Women that survived (green) and died (red) represented by age and fare')\n",
"plt.xlabel('Age')\n",
"plt.ylabel('Fare')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Упражнение 2. Нарисовать график выживших и погибших мужчин с осями: возраст, цена билета"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# Exercise: draw scatter plot of survived and died men by Age and Fare"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.4. Ящик с усами (box plot)\n",
"\n",
"**Ящик с усами (box plot, box-and-whisker plot)** - способ показать распределение значений по пяти ключевым точкам распределения: минимум или нижнияя граница, первая квартиль, медиана, третья квартиль и максимум или верхняя граница.\n",
"\n",
"[Ящик с усами в Википедии](https://ru.wikipedia.org/wiki/%D0%AF%D1%89%D0%B8%D0%BA_%D1%81_%D1%83%D1%81%D0%B0%D0%BC%D0%B8).\n",
"\n",
"**Медиана** - это такое число выборки, что ровно половина из элементов выборки больше него, а другая половина меньше него (если все элементы выборки различны). [Подробнее о медиане - в Википедии](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B4%D0%B8%D0%B0%D0%BD%D0%B0_(%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0)).\n",
"\n",
"**Квартили** дают важную информацию о структуре распределения признака. Вместе с медианой они делят вариационный ряд (или выборку) на 4 равные части. Квартилей две: верхняя и нижняя квартиль. 25% значений меньше, чем нижняя квартиль, 75% значений меньше, чем верхняя квартиль.\n",
"\n",
"**Усы** ящика в простейшем случае - это наблюдения минимума и максимума (тогда выбросы не показаны на графике). Но концы усов могут определяться несколькими способами. Например, как разность первого квартиля и полутора межквартильных расстояний и сумма третьего квартиля и полутора межквартильных расстояний. Тогда всё, что не входит в усы графика, считается \"выбросами\" данной выброки.\n",
"\n",
"Pandas+matplotlib по умолчанию показывают \"усами\" значения Q3 + 1.5\\*IQR и Q1 - 1.5\\*IQR то есть полтора интерквартильных размаха вверх от верхней квартили и вниз от нижней ([по документации] (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.boxplot.html)).\n",
"\n",
"[Пример использования box plot для удаления выбросов](https://www.youtube.com/watch?v=qpihk7KepDI&t=124s) в значениях Fare и подсчёте пропущенных значений Fare по оставшемуся распределению без выбросов (на языке R).\n",
"\n",
"[Understanding Boxplots](https://towardsdatascience.com/understanding-boxplots-5e2df7bcbd51) статья на английском про коробочные диаграммы (ящики с усами)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'Fare value')"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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1q9fn0svvTSHDx/OOL/PAfC9W+rtulfKzRcA4Hty+PDhU68XFhZedQwAZ7PcnzECgKGpqld9BYClEkYArBpXXXVVHnzwwVx11VWjHgWAMeNSOgBWharKE088kRtuuOHUsc8XAbBUdowAWBVaa7n22mvzqU99Ktdee60oAuCc2DECYNV47LHH8thjj416DADGkB0jAACge8IIAADonjACYNW46KKLsmvXrlx00UWjHgWAMeMzRgCsGvPz87n11ltHPQYAY8iOEQAA0D1hBAAAdE8YAQAA3RNGAABA94QRAKvGxo0bc99992Xjxo2jHgWAMeOudACsGseOHcvNN9886jEAGEN2jAAAgO4JIwAAoHvCCAAA6J4wAgAAuieMAFg1JiYm8sADD2RiYmLUowAwZtyVDoBV4/Dhw7nxxhtHPQYAY8iOEQCrxtVXX50HH3wwV1999ahHAWDM2DECYNV44okncsMNN4x6DADGkB0jAACge3aMABiKqhr1CEmWb47W2rL8PQAMhx0jAIaitbZsf26//fasXbs2d999dy7/R5/O3XffnbVr1+b2229fthkAGG92jAAYex//+MeTJB/+8IezsLCQD69fn507d55aB4CzqXH+v1zT09PtwIEDox4DgBVk4s5fz+GP/vioxwBghaiqx1tr02c7z6V0AABA94QRAADQPWEEAAB0TxgBAADdE0YAAED3hBEAANA9YQQAAHRPGAEAAN0TRgAAQPeEEQAA0D1hBAAAdE8YAQAA3RNGAABA94QRAADQPWEEAAB0TxgBAADdE0YAAED3hBEAANA9YQQAAHRPGAEAAN0TRgAAQPeEEQAA0D1hBAAAdE8YAQAA3RNGAABA99aOegAAhu9dP/9ovvXnL456jGUzceevj3qEoXvrW87P7/+zD4x6DIBVQxgBdOBbf/5iDn/0x0c9xrKYm5vLzMzMqMcYuh7iD2A5uZQOAADonjACAAC6J4wAAIDuCSMAAKB7wggAAOieMAIAALonjAAAgO4JIwAAoHvCCAAA6J4wAgAAuieMAACA7gkjAACge8IIAADo3tpRDwDA8H3fO+/M5P13jnqM5XP/qAcYvu97Z5L8+KjHAFg1hBFAB7795Y/m8Ef7+I/oubm5zMzMjHqMoZu489dHPQLAquJSOgAAoHvCCAAA6J4wAgAAuieMAACA7rn5AkAnuvqw/m+u/n/rW99y/qhHAFhVhBFAB3q5I11yIgB7+vcC8OZwKR0AANC9FRVGVfU3q+r/q6onq6qjJxECAACjtGLCqKrOS/Ivk/xYkquS3FBVV412KgAAoAcrJoySvDfJk621r7XWXkjy75JsH/FMAABAB1ZSGG1O8vRpx0cGawAAAEO1ku5KV2dYa991UtUtSW5Jkk2bNmVubm7IYwHwRmzZsmVkf3f9wvL/nfv371/+vxSAN81KCqMjSS4/7fiyJM+89qTW2r1J7k2S6enpNjMzsyzDAXBuWvuu/7e1LObm5uK9AYBztZIupfvdJFdW1Q/2to93AAACeklEQVRW1bokP5lk74hnAgAAOrBidoxaay9V1e1JHklyXpJ/3Vp7YsRjAQAAHVgxYZQkrbXPJPnMqOcAAAD6spIupQMAABgJYQQAAHRPGAEAAN0TRgAAQPeEEQAA0D1hBAAAdE8YAQAA3RNGAABA94QRAADQPWEEAAB0TxgBAADdE0YAAED3hBEAANA9YQQAAHRPGAEAAN0TRgAAQPeEEQAA0L1qrY16hjesqv5Lkj8c9RwArChvS/Inox4CgBXjL7bWvv9sJ411GAHAa1XVgdba9KjnAGC8uJQOAADonjACAAC6J4wAWG3uHfUAAIwfnzECAAC6Z8cIAADo3tpRDwAAS1FVLyc5dNrSB1trh0c0DgCrjEvpABgLVTXfWrvoDfzcea21l4cxEwCrh0vpABhbVTVRVf9vVf3e4M+1g/WZqtpfVf82g12mqvp7VfWFqvpiVf0fVXXeSIcHYEVxKR0A4+ItVfXFweunWmt/O8lzSba21r5TVVcmeTDJyYe7vjfJNa21p6rqnUn+TpIfbq29WFX3JPmpJJ9c5n8DACuUMAJgXPx5a+3dr1k7P8knqurdSV5O8l+d9r0vtNaeGrx+f5L/OsnvVlWSvCUnogoAkggjAMbbP0ryx0nelROXh3/ntO8dP+11Jbm/tXbXMs4GwBjxGSMAxtlbkzzbWnslyY1JXu9zQ59Ncn1VvT1JquriqvqLyzQjAGNAGAEwzu5JclNV/XZOXEZ3/Ewntdb+IMk/TfJoVR1Msi/Jpcs2JQArntt1AwAA3bNjBAAAdE8YAQAA3RNGAABA94QRAADQPWEEAAB0TxgBAADdE0YAAED3hBEAANC9/x9r34Ke8w3DNgAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"boxplot = df.boxplot(column=['Fare'])\n",
"\n",
"plt.ylabel('Fare value')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В нашем случае значения Fare дают много выбросов над верхней границей графика."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Детальный анализ связи признаков и выживания\n",
"### 3.1. Связь пола и выживания"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Sex
\n",
"
Survived
\n",
"
\n",
"
\n",
"
PassengerId
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
male
\n",
"
0
\n",
"
\n",
"
\n",
"
2
\n",
"
female
\n",
"
1
\n",
"
\n",
"
\n",
"
3
\n",
"
female
\n",
"
1
\n",
"
\n",
"
\n",
"
4
\n",
"
female
\n",
"
1
\n",
"
\n",
"
\n",
"
5
\n",
"
male
\n",
"
0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Sex Survived\n",
"PassengerId \n",
"1 male 0\n",
"2 female 1\n",
"3 female 1\n",
"4 female 1\n",
"5 male 0"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# выберем только колонки Sex (пол) и Survived (выживаемость), сохраним это в новый датафрейм\n",
"# select only dataframe part with Sex and Survived colums, save to new dataframe\n",
"df_sex = df_train.loc[:, ['Sex', 'Survived']]\n",
"df_sex.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 577 entries, 1 to 891\n",
"Data columns (total 2 columns):\n",
"Sex 577 non-null object\n",
"Survived 577 non-null int64\n",
"dtypes: int64(1), object(1)\n",
"memory usage: 13.5+ KB\n"
]
}
],
"source": [
"# select only male part\n",
"# выберем только мужскую часть пассажиров\n",
"df_male = df_sex[df_sex.Sex == 'male']\n",
"df_male.info()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 314 entries, 2 to 889\n",
"Data columns (total 2 columns):\n",
"Sex 314 non-null object\n",
"Survived 314 non-null int64\n",
"dtypes: int64(1), object(1)\n",
"memory usage: 7.4+ KB\n"
]
}
],
"source": [
"# select only female part\n",
"# выберем только женскую часть пассажиров\n",
"df_female = df_sex[df_sex.Sex == 'female']\n",
"df_female.info()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.18890814558058924\n",
"0.7420382165605095\n",
"\n",
"Percent of males survived is 19%\n",
"Percent of females survived is 74%\n"
]
}
],
"source": [
"# Процент выживших мужчин - это среднее значение колонки Survived для них в датасете df_male\n",
"# percent of males survived - is a mean of Survived values in df_male\n",
"# Процент выживших женщин - это среднее значение колонки Survived для них в датасете df_female\n",
"# percent of females survived - is a mean of Survived values in df_female\n",
"\n",
"male_survived_percent = df_male['Survived'].mean()\n",
"female_survived_percent = df_female['Survived'].mean()\n",
"\n",
"print(male_survived_percent)\n",
"print(female_survived_percent)\n",
"\n",
"print()\n",
"\n",
"print(\"Percent of males survived is {0:.0f}%\".format(male_survived_percent*100))\n",
"print(\"Percent of females survived is {0:.0f}%\".format(female_survived_percent*100))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Survived\n",
"Sex \n",
"female 0.742038\n",
"male 0.188908\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzUAAAIyCAYAAADynuTgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHkxJREFUeJzt3X+wnnV55/HPRQLEikoH0rUlQNIa21JRu0RYx7GNtkUcbdhZQYLT2m7dTVcbZetOZ8NYGYZqd5d22rUO0yWd7eo60oB2W6PNltna6mz90U3iptqQska0yynMNIDQRQch9do/cmAOh5Och3CSJ194vWbO+Nz38z33uU5mnDNv7h9PdXcAAABGddK0BwAAAHgqRA0AADA0UQMAAAxN1AAAAEMTNQAAwNBEDQAAMDRRAwAADE3UAAAAQxM1AADA0JZP6wefeeaZvXr16mn9eAAA4AS3e/fue7p75WLrphY1q1evzq5du6b14wEAgBNcVf3NJOtcfgYAAAxN1AAAAEMTNQAAwNCmdk8NAAA8nTzyyCOZmZnJQw89NO1RhrNixYqsWrUqJ5988lF9v6gBAIAlMDMzk+c85zlZvXp1qmra4wyju3PvvfdmZmYma9asOapjuPwMAACWwEMPPZQzzjhD0DxJVZUzzjjjKZ3hEjUAALBEBM3Rear/bqIGAAAYmntqAADgGFi95Y+W9Hhf+/evm2jde9/73tx0001ZtmxZTjrppNx444256KKLntLP3r59e2677bZs2bLlKR0nSU477bQ8+OCDT/k4c4kaAAB4mvjc5z6XT3ziE/nCF76QU089Nffcc08efvjhib734MGDWb584TzYsGFDNmzYsJSjLimXnwEAwNPE3XffnTPPPDOnnnpqkuTMM8/M93zP92T16tW55557kiS7du3K+vXrkyTXXnttNm3alIsvvjhvfvObc9FFF2Xv3r2PHW/9+vXZvXt3PvCBD2Tz5s154IEHsnr16nz7299Oknzzm9/M2WefnUceeSRf+cpXcskll+SCCy7IK1/5yvz1X/91kuSrX/1qXv7yl+dlL3tZ3v3udx+T31vUAADA08TFF1+cO++8My984Qvztre9LZ/+9KcX/Z7du3fnYx/7WG666aZs3Lgxt9xyS5JDgXTXXXflggsueGzt8573vLzkJS957Lgf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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# короткий путь построения данных вероятности выживания по полу - pivot_table (сводная таблица) с агрегацией средним\n",
"# survived by sex - shorter way is creating a pivot table with pandas with its default mean aggregation\n",
"sex_pivot = df_train.pivot_table(index=\"Sex\", values=\"Survived\", aggfunc='mean')\n",
"print(sex_pivot)\n",
"\n",
"sex_pivot.plot.bar()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.2. Упражнение 3. Связь класса пассажира и выживания"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"# Exercise: calculate percent of survived in each Pclass and show on bar chart or other plot"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"survived by class and sex\n",
"Pclass Sex Survived\n",
"1 female 1 0.968085\n",
" 0 0.031915\n",
" male 0 0.631148\n",
" 1 0.368852\n",
"2 female 1 0.921053\n",
" 0 0.078947\n",
" male 0 0.842593\n",
" 1 0.157407\n",
"3 female 0 0.500000\n",
" 1 0.500000\n",
" male 0 0.864553\n",
" 1 0.135447\n",
"Name: Survived, dtype: float64\n"
]
}
],
"source": [
"# Check how people survived by their class and sex\n",
"print(\"survived by class and sex\")\n",
"print(df_train.groupby([\"Pclass\", \"Sex\"])[\"Survived\"].value_counts(normalize=True))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"B96 B98 4\n",
"C23 C25 C27 4\n",
"G6 4\n",
"E101 3\n",
"F2 3\n",
"Name: Cabin, dtype: int64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check how Cabin feature looks\n",
"# there are some strange cabin values like 2 or 3 cabins for one passenger, no idea ho to process them\n",
"# просмотр, как выглядит признак Cabin (каюта), для некоторых пассажиров указано несколько кают\n",
"df_train['Cabin'].value_counts().head()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CA. 2343 7\n",
"347082 7\n",
"1601 7\n",
"3101295 6\n",
"CA 2144 6\n",
"347088 6\n",
"382652 5\n",
"S.O.C. 14879 5\n",
"PC 17757 4\n",
"113781 4\n",
"Name: Ticket, dtype: int64"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check how Ticket feature looks\n",
"# also quite strange data without any clear form to process\n",
"# просмотр, как выглядит признак Ticket (билет)\n",
"df_train['Ticket'].value_counts().head(10)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Survived
\n",
"
Pclass
\n",
"
Name
\n",
"
Sex
\n",
"
Age
\n",
"
SibSp
\n",
"
Parch
\n",
"
Ticket
\n",
"
Fare
\n",
"
Cabin
\n",
"
Embarked
\n",
"
AgeGrp
\n",
"
\n",
"
\n",
"
PassengerId
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
0.0
\n",
"
3
\n",
"
Braund, Mr. Owen Harris
\n",
"
male
\n",
"
22.0
\n",
"
1
\n",
"
0
\n",
"
A/5 21171
\n",
"
7.2500
\n",
"
NaN
\n",
"
S
\n",
"
2.0
\n",
"
\n",
"
\n",
"
2
\n",
"
1.0
\n",
"
1
\n",
"
Cumings, Mrs. John Bradley (Florence Briggs Th...
\n",
"
female
\n",
"
38.0
\n",
"
1
\n",
"
0
\n",
"
PC 17599
\n",
"
71.2833
\n",
"
C85
\n",
"
C
\n",
"
3.0
\n",
"
\n",
"
\n",
"
3
\n",
"
1.0
\n",
"
3
\n",
"
Heikkinen, Miss. Laina
\n",
"
female
\n",
"
26.0
\n",
"
0
\n",
"
0
\n",
"
STON/O2. 3101282
\n",
"
7.9250
\n",
"
NaN
\n",
"
S
\n",
"
2.0
\n",
"
\n",
"
\n",
"
4
\n",
"
1.0
\n",
"
1
\n",
"
Futrelle, Mrs. Jacques Heath (Lily May Peel)
\n",
"
female
\n",
"
35.0
\n",
"
1
\n",
"
0
\n",
"
113803
\n",
"
53.1000
\n",
"
C123
\n",
"
S
\n",
"
3.0
\n",
"
\n",
"
\n",
"
5
\n",
"
0.0
\n",
"
3
\n",
"
Allen, Mr. William Henry
\n",
"
male
\n",
"
35.0
\n",
"
0
\n",
"
0
\n",
"
373450
\n",
"
8.0500
\n",
"
NaN
\n",
"
S
\n",
"
3.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Survived Pclass \\\n",
"PassengerId \n",
"1 0.0 3 \n",
"2 1.0 1 \n",
"3 1.0 3 \n",
"4 1.0 1 \n",
"5 0.0 3 \n",
"\n",
" Name Sex Age \\\n",
"PassengerId \n",
"1 Braund, Mr. Owen Harris male 22.0 \n",
"2 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 \n",
"3 Heikkinen, Miss. Laina female 26.0 \n",
"4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 \n",
"5 Allen, Mr. William Henry male 35.0 \n",
"\n",
" SibSp Parch Ticket Fare Cabin Embarked AgeGrp \n",
"PassengerId \n",
"1 1 0 A/5 21171 7.2500 NaN S 2.0 \n",
"2 1 0 PC 17599 71.2833 C85 C 3.0 \n",
"3 0 0 STON/O2. 3101282 7.9250 NaN S 2.0 \n",
"4 1 0 113803 53.1000 C123 S 3.0 \n",
"5 0 0 373450 8.0500 NaN S 3.0 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check survival by age groups by creating such groups\n",
"# Проверим выживаемость по возрастным группам, например по десяткам лет. Создадим такой новый признак.\n",
"\n",
"# https://stackoverflow.com/questions/5584586/find-the-division-remainder-of-a-number\n",
"# In division a % b give modulo\n",
"# В делении a % b даёт остаток от деления\n",
"# a / b gives divisor as float\n",
"# a // b gives divisor as integer, which will serve as a group\n",
"def make_age_group(row):\n",
" return row['Age'] // 10\n",
"\n",
"df['AgeGrp'] = df.apply(make_age_group, axis=1)\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"survived by AgeGroup\n",
"AgeGrp Survived\n",
"0.0 1.0 0.612903\n",
" 0.0 0.387097\n",
"1.0 0.0 0.598039\n",
" 1.0 0.401961\n",
"2.0 0.0 0.650000\n",
" 1.0 0.350000\n",
"3.0 0.0 0.562874\n",
" 1.0 0.437126\n",
"4.0 0.0 0.617978\n",
" 1.0 0.382022\n",
"5.0 0.0 0.583333\n",
" 1.0 0.416667\n",
"6.0 0.0 0.684211\n",
" 1.0 0.315789\n",
"7.0 0.0 1.000000\n",
"8.0 1.0 1.000000\n",
"Name: Survived, dtype: float64\n"
]
}
],
"source": [
"# Check how each age group survives\n",
"# Проверим, какая выживаемость в каждой возрастной группе\n",
"print(\"survived by AgeGroup\")\n",
"print(df.groupby([\"AgeGrp\"])[\"Survived\"].value_counts(normalize=True))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.0 344\n",
"3.0 232\n",
"1.0 143\n",
"4.0 135\n",
"0.0 82\n",
"5.0 70\n",
"6.0 32\n",
"7.0 7\n",
"8.0 1\n",
"Name: AgeGrp, dtype: int64\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"